home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / utility3 / what.zip / WHPEWHAT.MS_ / WHPEWHAT.bin
Text File  |  1992-08-06  |  13KB  |  413 lines

  1. '$INCLUDE 'setupapi.inc'
  2. '$INCLUDE 'msdetect.inc'
  3.  
  4.  
  5. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  6. ''
  7. '' Constants:
  8. ''
  9. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  10.  
  11. '' Dialog IDs
  12. CONST CHECK               = 100
  13. CONST HELPCHK             = 150
  14.  
  15. CONST GETPATH1            = 200
  16. CONST HELPGP1             = 250
  17.  
  18. CONST GETPATH2            = 300
  19. CONST HELPGP2             = 350
  20.  
  21. CONST EXITSUCCESS         = 400
  22. CONST EXITQUIT            = 500
  23. CONST EXITFAILURE         = 600
  24. CONST EXITRESTART         = 700
  25. CONST EXITRUNBATCH        = 800
  26.  
  27.  
  28. ''Bitmap ID
  29. CONST LOGO                =   1
  30.  
  31. '' MessageBox constants
  32. CONST MB_ABORTRETRYIGNORE = 2
  33. CONST MB_YESNO            = 4
  34. CONST MB_RETRYCANCEL      = 5
  35. CONST MB_ICONQUESTION     = 32
  36. CONST MB_ICONEXCLAMATION  = 48
  37. CONST IDRETRY             = 4
  38. CONST IDCANCEL            = 2
  39. CONST IDIGNORE            = 5
  40. CONST IDYES               = 6
  41. CONST IDNO                = 7
  42.  
  43. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  44. DECLARE FUNCTION SzDiskError (cbNeeded, szDrive$) AS STRING
  45. DECLARE SUB SetConfigNumFiles (cfiles%)
  46.  
  47.  
  48.  
  49. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  50. ''
  51. '' START MAIN
  52. ''
  53. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  54.  
  55.  
  56.     SetTitle "Help Author Setup"
  57.     SetBitmap "mscuistf.dll", LOGO
  58.  
  59.  
  60.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  61.     IF szInf$ = "" THEN
  62.         szInf$ = GetSymbolValue("STF_CWDDIR") + "WHPEWHAT.INF"
  63.     ENDIF
  64.  
  65.     ReadInfFile szInf$
  66.     szInf$ = ""
  67.  
  68.     'Find Windows version
  69.     IF GetWindowsMajorVersion() > 3 OR GetWindowsMinorVersion() > 9 THEN
  70.         f30% = 0
  71.     ELSE
  72.         f30% = 1
  73.     END IF
  74.  
  75.     SetSymbolValue "CheckItemsIn", "{}"
  76.     AddListItem    "CheckItemsIn", "ON"   '' WHPE default always on
  77.     AddListItem    "CheckItemsIn", "ON"    '' WHAT default
  78.     AddListItem    "CheckItemsIn", "ON"   '' SHED/MRBC
  79.     AddListItem    "CheckItemsIn", "ON"    '' Sample Files
  80.  
  81.     szWHATDir$ = FindTargetOnEnvVar("winword.exe", "path")
  82.     IF szWWDir$ <> "" THEN
  83.         SplitPath szWHATDir$, szDrive$, szDir$, szFile$, szExt$
  84.         szWHATDir$ = szDrive$ + MID$(szDir$, 1, LEN(szDir$) - 1)
  85.         szDrive$ = ""
  86.         szDir$ = ""
  87.         szFile$ = ""
  88.         szExt$ = ""
  89.     ELSE
  90.         szWHATDir$ = "C:\WINWORD"
  91.     END IF
  92.  
  93.     SetSymbolValue "OptionsGreyed", "{}"
  94.  
  95. GETOPTIONS:
  96.     sz$ = UIStartDlg("mscuistf.dll", CHECK, "FCheckDlgProc", HELPCHK, "FHelpDlgProc")
  97.  
  98.     IF sz$ = "EXIT" THEN
  99.         UIPop 1
  100.         ERROR STFQUIT
  101.     ENDIF
  102.  
  103.     szWHPE$ = GetListItem("CheckItemsOut", 1)
  104.     szWHAT$ = GetListItem("CheckItemsOut", 2)
  105.     szSHED$ = GetListItem("CheckItemsOut", 3)
  106.     szSAMPLE$ = GetListItem("CheckItemsOut", 4)
  107.  
  108.     IF szWHPE$ = "OFF" AND szWHAT$ = "OFF" AND szSHED$ = "OFF" AND szSAMPLE$ = "OFF" THEN
  109.         iMB% = DoMsgBox("You really should pick at least one option!", "Setup Error", MB_RETRYCANCEL + MB_ICONEXCLAMATION)
  110.         IF iMB% = IDRETRY THEN
  111.             GOTO GETOPTIONS
  112.         END IF
  113.         UIPop 1
  114.         ERROR STFQUIT
  115.     END IF
  116.  
  117.     UIPop 1
  118.  
  119.  
  120.     SetSymbolValue "EditFocus", "ALL"
  121.  
  122.  
  123.     IF szWHPE$ = "ON" OR szSHED$ = "ON" OR szSAMPLE$ = "ON" THEN
  124.         SetSymbolValue "EditTextIn", "C:\HELPAUTH"
  125.  
  126. GETWHPEDIR:
  127.         sz$ = UIStartDlg("mscuistf.dll", GETPATH1, "FEditDlgProc", HELPGP1, "FHelpDlgProc")
  128.         szWHPEDir$ = GetSymbolValue("EditTextOut")
  129.  
  130.         IF sz$ = "EXIT" THEN
  131.             UIPop 1
  132.             ERROR STFQUIT
  133.         ELSEIF sz$ <> "CONTINUE" THEN
  134.             GOTO GETWHPEDIR
  135.         ENDIF
  136.  
  137.         IF IsDirWritable(szWHPEDir$) = 0 THEN
  138.             iMB% = DoMsgBox( "The path you entered is not a valid pathname.", "Setup Error", MB_RETRYCANCEL + MB_ICONEXCLAMATION )
  139.             IF iMB% = IDRETRY THEN
  140.                 GOTO GETWHPEDIR
  141.             ELSE
  142.                 UIPop 1
  143.                 ERROR STFQUIT
  144.             END IF
  145.         END IF
  146.  
  147.         UIPop 1
  148.  
  149.     END IF
  150.  
  151.  
  152.  
  153.     IF szWHAT$ = "ON" THEN
  154.         SetSymbolValue "EditTextIn", szWHATDir$
  155.  
  156. GETWHATDIR:
  157.         sz$ = UIStartDlg("mscuistf.dll", GETPATH2, "FEditDlgProc", HELPGP2, "FHelpDlgProc")
  158.  
  159.         IF sz$ = "EXIT" THEN
  160.             UIPop 1
  161.             ERROR STFQUIT
  162.         ELSEIF sz$ <> "CONTINUE" THEN
  163.             GOTO GETWHATDIR
  164.         ENDIF
  165.  
  166.         szWHATDir$ = GetSymbolValue("EditTextOut")
  167.         szWWFile$ = MakePath(szWHATDir$, "winword.exe")
  168.  
  169.         IF DoesFileExist(szWWFile$, femExists) = 0 THEN
  170.             iMB% = DoMsgBox("The given directory does not have Word for Windows installed in it.", "Setup Error", MB_RETRYCANCEL + MB_ICONEXCLAMATION)
  171.             IF iMB% = IDRETRY THEN
  172.                 GOTO GETWHATDIR
  173.             ELSE
  174.                 UIPop 1
  175.                 ERROR STFQUIT
  176.             END IF
  177.         END IF
  178.  
  179.         ' Determine version of WinWord.  Quick and dirty test: compare size
  180.         ' to 1 MB.
  181.         verWW% = 1
  182.         IF GetSizeOfFile(szWWFile$) >= 1000000 THEN
  183.             verWW% = 2
  184.         END IF
  185.  
  186.         ' Check for alternate location for .dot files
  187.         szDotPath$ = String$(255, 0)
  188.         szSection$ = "Microsoft Word"
  189.         IF verWW% = 2 THEN
  190.             szSection$ = szSection$ + " 2.0"
  191.         END IF
  192.         t% = GetProfileString(szSection$, "DOT-path", "", szDotPath$, 255)
  193.         IF szDotPath$ = "" THEN
  194.             szDotPath$ = szWHATDir$
  195.         END IF
  196.         szSection$ = ""
  197.  
  198.         IF IsDirWritable(szDotPath$) = 0 THEN
  199.             iMB% = DoMsgBox( "The path you entered is not a valid pathname.", "Setup Error", MB_RETRYCANCEL + MB_ICONEXCLAMATION )
  200.             IF iMB% = IDRETRY THEN
  201.                 GOTO GETWHPEDIR
  202.             ELSE
  203.                 UIPop 1
  204.                 ERROR STFQUIT
  205.             END IF
  206.         END IF
  207.  
  208.         IF IsDirWritable(szWHATDir$) = 0 THEN
  209.             szWHATDir$ = GetWindowsDir
  210.         END IF
  211.  
  212.         UIPop 1
  213.  
  214.     END IF
  215.  
  216.  
  217.  
  218. INSTALL:
  219.     szSrcDir$ = GetSymbolValue("STF_SRCDIR")
  220.     szWinDir$ = GetWindowsDir
  221.  
  222.     IF szWHPE$ = "ON" THEN
  223.         AddSectionFilesToCopyList "whpe files", szSrcDir$, szWHPEDir$
  224.         AddSectionFilesToCopyList "dlls",       szSrcDir$, szWinDir$
  225.         AddSectionFilesToCopyList "system",     szSrcDir$, szWinDir$ + "system\"
  226.         IF f30% THEN
  227.             AddSectionFilesToCopyList "3.0 dlls",       szSrcDir$, szWinDir$ + "system\"
  228.         ELSE
  229.             AddSectionFilesToCopyList "3.1 dlls",       szSrcDir$, szWinDir$ + "system\"
  230.         END IF
  231.     END IF
  232.  
  233.     IF szWHPE$ = "ON" OR szWHAT$ = "ON" THEN
  234.         AddSectionFilesToCopyList "hc files",   szSrcDir$, szWinDir$
  235.         IF f30% THEN
  236.             AddSectionFilesToCopyList "3.0 hc files",       szSrcDir$, szWinDir$
  237.         ELSE
  238.             AddSectionFilesToCopyList "3.1 hc files",       szSrcDir$, szWinDir$
  239.         END IF
  240.     END IF
  241.  
  242.     IF szWHAT$ = "ON" THEN
  243.         IF verWW% = 1 THEN
  244.             AddSectionFilesToCopyList "what files 1.x", szSrcDir$, szDotPath$
  245.             AddSectionFilesToCopyList "what help 1.x", szSrcDir$, szWHATDir$
  246.         ELSE
  247.             AddSectionFilesToCopyList "what files 2.0", szSrcDir$, szDotPath$
  248.             AddSectionFilesToCopyList "what help 2.0", szSrcDir$, szWHATDir$
  249.         END IF
  250.     END IF
  251.  
  252.     IF szSHED$ = "ON" THEN
  253.         AddSectionFilesToCopyList "graphic tools", szSrcDir$, szWHPEDir$
  254.         AddSectionFilesToCopyList "shed help", szSrcDir$, szWinDir$
  255.     END IF
  256.  
  257.     IF szSAMPLE$ = "ON" THEN
  258.         AddSectionFilesToCopyList "helpex", szSrcDir$, MakePath(szWHPEDir$,"helpex")
  259.         AddSectionFilesToCopyList "dlldemo", szSrcDir$, MakePath(szWHPEDir$,"dlldemo")
  260.         AddSectionFilesToCopyList "sample", szSrcDir$, MakePath(szWHPEDir$,"sample")
  261.     END IF
  262.  
  263.     ' Remove bad files from a possible previous install
  264.     AddSectionFilesToCopyList "remove", szSrcDir$, szWinDir$
  265.  
  266.     ' Check for disk space, and do not proceed until there is enough.
  267.     WHILE GetCopyListCost("", "costs", "needed") > 0
  268.         iDrive = 1
  269.         szNeeded$ = GetListItem("costs", iDrive)
  270.         WHILE Val(szNeeded$) <= 0
  271.             iDrive = iDrive + 1
  272.             szNeeded$ = GetListItem("costs", iDrive)
  273.         WEND
  274.         iMB% = DoMsgBox(SzDiskError(Val(szNeeded$), Chr$(Asc("A") + iDrive - 1)), "Setup Error", MB_RETRYCANCEL + MB_ICONEXCLAMATION )
  275.         IF iMB% = IDCANCEL THEN
  276.             ERROR STFQUIT
  277.         END IF
  278.     WEND
  279.  
  280.     ' Copy all files
  281.     SetRestartDir GetWindowsDir
  282.     t% = SetSizeCheckMode( scmOff )
  283.     CopyFilesInCopyList
  284.  
  285.     ' Advise that FILES= should be at least 50
  286.     IF szWHAT$ = "ON" OR szWHPE$ = "ON" THEN
  287.         'IF GetWindowsMajorVersion() > 3 OR GetWindowsMinorVersion() > 9 THEN
  288.             IF GetConfigNumFiles() < 50 THEN
  289.                 szMessage1$ = "For best results, we recommend that the number of open files allowed by CONFIG.SYS be at least 50.  "
  290.                 szMessage2$ = "Would you like for us to change this for you?"
  291.                 iMB% = DoMsgBox(szMessage1$ + szMessage2$, "Help Author Setup" , MB_YESNO + MB_ICONQUESTION )
  292.                 szMessage1$ = ""
  293.                 szMessage2$ = ""
  294.                 IF iMB% = IDYES THEN
  295.                     ON ERROR GOTO RESUMENEXT
  296.                     SetConfigNumFiles(50)
  297.                     ON ERROR GOTO 0
  298.                     ' Should we tell them to reboot?
  299.                 END IF
  300.             END IF
  301.         'END IF
  302.     END IF
  303.  
  304.     ' Create Progman group and icons
  305.     IF szWHPE$ = "ON" OR szSHED$ = "ON" THEN
  306.         CreateProgmanGroup  "Help Author", "", 0
  307.         ShowProgmanGroup    "Help Author", 1, 0
  308.         IF szWHPE$ = "ON" THEN
  309.             CreateProgmanItem   "Help Author", "Help Project Editor", MakePath(szWHPEDir$, "whpe.exe"), "", 0
  310.             CreateProgmanItem   "Help Author", "Getting Started", "notepad.exe " + MakePath(szWHPEDir$, "getstart.txt"), "", 0
  311.         END IF
  312.  
  313.         IF szSHED$ = "ON" THEN
  314.             CreateProgmanItem   "Help Author", "Hotspot Editor", MakePath(szWHPEDir$, "shed.exe"), "", 0
  315.         END IF
  316.  
  317.         IF szWHAT$ = "ON" AND verWW% = 1 THEN
  318.             CreateProgmanItem   "Help Author", "Help on WHAT", "winhelp.exe " + MakePath(szWHATDir$, "what.hlp"), "", 0
  319.         END IF
  320.     END IF
  321.  
  322.     IF szWHAT$ = "ON" THEN
  323.     RemoveIniKey "WIN.INI", "Extensions", "rtf", 0
  324.         CreateIniKeyValue "WIN.INI", "Extensions", "rtf", szWWFile$ + " ^.rtf", 0
  325.     END IF
  326.  
  327.     IF RestartListEmpty() = 0 THEN
  328.         IF GetWindowsMajorVersion() > 3 OR GetWindowsMinorVersion() > 9 THEN
  329.             ' Setup successful, but Windows must be restarted
  330.             sz$ = UIStartDlg("mscuistf.dll", EXITRESTART, "FInfo0DlgProc", 0,"")
  331.             UIPopAll
  332.             i% = ExitExecRestart()
  333.         ELSE
  334.             ' User must run c:\_mssetup.bat to complete setup
  335.             sz$ = UIStartDlg("mscuistf.dll", EXITRUNBATCH,"FInfo0DlgProc", 0,"")
  336.             UIPopAll
  337.         END IF
  338.         END
  339.     END IF
  340.  
  341. QUIT:
  342.     IF Err = 0 THEN
  343.         Dlg% = EXITSUCCESS
  344.     ELSEIF Err = STFQUIT THEN
  345.         Dlg% = EXITQUIT
  346.     ELSE
  347.         Dlg% = EXITFAILURE
  348.     ENDIF
  349.  
  350.     sz$ = UIStartDlg("mscuistf.dll", Dlg%, "FInfo0DlgProc", 0, "")
  351.     UIPopAll
  352.  
  353.     END
  354.  
  355. RESUMENEXT:
  356.     RESUME NEXT
  357.  
  358.  
  359. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  360.     IF szDir$ = "" THEN
  361.         MakePath = szFile$
  362.     ELSEIF szFile$ = "" THEN
  363.         MakePath = szDir$
  364.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  365.         MakePath = szDir$ + szFile$
  366.     ELSE
  367.         MakePath = szDir$ + "\" + szFile$
  368.     END IF
  369. END FUNCTION
  370.  
  371.  
  372. FUNCTION SzDiskError (cbNeeded, szDrive$) STATIC AS STRING
  373.  
  374.     szT$ = "You do not have enough disk space to install the selected items.  You need "
  375.     cbNeeded = (cbNeeded + 999)/1000
  376.     szT$ = szT$ + Str$(cbNeeded) + "K more space on your " + szDrive$ + ": drive."
  377.  
  378.     SzDiskError = szT$
  379.     szT$ = ""
  380.  
  381. END FUNCTION
  382.  
  383.  
  384. SUB SetConfigNumFiles (cfiles%) STATIC
  385.  
  386.     OPEN "C:\CONFIG.SYS" FOR INPUT AS #1
  387.     OPEN "C:\HELPAUTH.~TM" FOR OUTPUT AS #2
  388.     WHILE EOF(1) <> -1
  389.         INPUT #1, szInput$
  390.         szInput$ = LTRIM$(szInput$)
  391.         IF MID$(UCASE$(szInput$), 1, 5) = "FILES" THEN
  392.             PRINT #2, "FILES = "; cfiles%
  393.         ELSE
  394.             PRINT #2, szInput$
  395.         ENDIF
  396.     WEND
  397.     CLOSE #1
  398.     CLOSE #2
  399.  
  400.     OPEN "C:\HELPAUTH.~TM" FOR INPUT AS #1
  401.     OPEN "C:\CONFIG.SYS" FOR OUTPUT AS #2
  402.     WHILE EOF(1) <> -1
  403.         INPUT #1, szInput$
  404.         PRINT #2, szInput$
  405.     WEND
  406.     CLOSE #1
  407.     CLOSE #2
  408.  
  409.     KILL "C:\HELPAUTH.~TM"
  410.  
  411. END SUB
  412.  
  413.